AtCoder Beginner Contest 200 D
種別: 記事
カテゴリ: 競技プログラミング
サブカテゴリ: AtCoder > AtCoder Beginner Contest 200
タグ: #解いた問題
(工事中)
2021年5月8日にAtCoder で開催されたコンテストであるAtCoder Beginner Contest 200 のD問題に関するメモ
解き方
解答例
下は上記の方法で解いたときの提出結果である。また、その提出の際に提出したソースコードをその下に転記する。
code: C
#include <stdio.h>
typedef struct hist {
int l;
int nums200;
} hist;
int isNotContain(int n, int *a, int l) {
for (int i = 0; i < n; i++) {
if (n == ai) {
return -1;
}
}
return 1;
}
int main () {
int n = 0;
hist mod200200 = {};
int b_idx = -1;
int c_idx = -1;
int c_added = -1;
int res = 0;
res = scanf("%d", &n);
for (int i = 0; i < n; i++) {
int a = 0;
res = scanf("%d", &a);
if (b_idx < 0) {
if (mod200a%200.l > 0) {
b_idx = a%200;
c_added = i+1;
} else {
mod200a%200.l = 1;
mod200a%200.nums0 = i+1;
for (int j = 0; j < 200; j++) {
if (mod200j.l > 0 && isNotContain(i+1, mod200j.nums, mod200j.l) > 0) {
if (mod200(j+a)%200.l > 0) {
b_idx = (j+a)%200;
c_idx = j;
c_added = i+1;
} else {
for (int k = 0; k < 200; k++) {
mod200(j+a)%200.numsk = mod200j.numsk;
}
mod200(j+a)%200.nums[mod200j.l] = i+1;
mod200(j+a)%200.l = mod200j.l + 1;
}
}
}
}
}
}
if (b_idx < 0) {
printf("No\n");
return 0;
}
printf("Yes\n");
printf("%d", mod200b_idx.l);
for (int i = 0; i < mod200b_idx.l; i++) {
printf(" %d", mod200b_idx.numsi);
}
printf("\n");
if (c_idx < 0) {
printf("1 %d\n", c_added);
} else {
printf("%d", mod200c_idx.l+1);
for (int i = 0; i < mod200c_idx.l; i++) {
printf(" %d", mod200c_idx.numsi);
}
printf(" %d\n", c_added);
}
return 0;
}
私の提出一覧
table: submissions_atcoder_begginer_contest_200_D
提出のURL 提出時刻 結果 備考
1回目 https://atcoder.jp/contests/abc200/submissions/22430665 2021-05-08T22:17:05+0900 WA
2回目 https://atcoder.jp/contests/abc200/submissions/22431792 2021-05-08T22:21:59+0900 AC
感想